package com.tbit.main.service;

import com.tbit.main.pojo.AccountUser;
import com.tbit.main.pojo.Machine;
import com.tbit.main.pojo.TerMsg;
import com.tbit.main.pojo.VO.TerControlReqVO;
import com.tbit.main.pojo.bo.SendControlBO;
import com.tbit.main.pojo.bo.CommonControlParamBO;
import com.tbit.main.pojo.bo.TerControlBO;
import com.tbit.main.service.ter.TerControlResult;

import java.util.List;

/**
 * 终端控制
 *
 * @author Leon
 * 2019年11月12日 下午2:16:06
 */
public interface TerControlService {
    /**
     * 发送远程指令
     *
     */
    void sendControl(String serNO, String machineNO, String controlType, String paramName, String paramValue);

    void sendBatchControl(String machineNO, List<TerMsg> terMessages);

    void sendBatchControl(List<SendControlBO> sendControlBOS);

    /**
     * 终端回复处理
     *
     */
    void respHandle(String serNO, String controlRet);

    String control(TerControlReqVO reqVO);

    /**
     * 通用控制
     *
     * @param controlParam 指令参数
     */
    void commonControl(CommonControlParamBO controlParam);

    /**
     * 批量指令
     *
     * @param accountUser 用户信息
     * @param userCodes   车辆编号
     * @param type        指令类型
     * @param mapType     地图类型
     * @param lon         经度
     * @param lat         纬度
     * @return TerControlResult
     */
    List<TerControlResult> controlBatch(AccountUser accountUser, List<String> userCodes, Integer type, Integer mapType, Double lon, Double lat, Integer photograph, String helmetMac, Integer cameraType, Integer dispatch);

    void batchControl(Machine machine, List<TerControlBO> terControls);

    void batchControl(List<Machine> machines, TerControlBO terControl);
}